<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>数组的解构赋值</title>
    <script>
    /* 
        解构赋值
    */
        const arr=Array()
        arr[0]='孙悟空'
        arr[1]='猪八戒'
        arr[2]='沙和尚'

        
        // 给a,b,c三个变量赋值为arr里面的三个元素

        let [a,b,c]=arr     // a=孙悟空 b=猪八戒 c=沙和尚

        let [d,e,f,g=10]=arr;    // d=孙悟空 e=猪八戒 f=沙和尚 g=10

        [d,e,f,g=g]=[1,2,3]     // d=1,e=2,f=3,g=10


        // 解构数组时，可以用...来设置多余的元素
        let [n1,n2,...n3]=[1,2,3,4,5,6,7]   //n1=1，n2=2,n3=[4,5,6,7]


        // 对函数的返回值解构
        const fn=()=>{
            return [11,22,33]
        }

        let [a1,a2,a3]=fn()   //a1=11,a2=22,a3=33    

        // 可以通过结构赋值快速交换两个变量的值
        let a_1=10,a_2=20;
        [a_1,a_2] = [a_2,a_1] 
        // 交换数组中的两个元素
        const arr2=['孙悟空','猪八戒'];
        [arr2[0],arr2[1]]=[arr2[1],arr2[0]]

        /* 

        数组中可以存任意类型的数据，也包括数组。
            如果一个数组中的元素还是数组，那么我们称这个数组为二维数组。


         */
        const arr3=[['猪八戒',18,'男'],['孙悟空',19,'男'],['沙和尚',17,'男']]

        for(let i of arr3){
            for(let j of i){
                console.log(j)
            }
        } 

        // 解构二维数组
        [[name,age,gender],obj]=arr3; 
        [[name,age,gender],...obj1]=arr3
    </script>
</head>
<body>
    
</body>
</html>